﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.IO.Compression;

namespace LanceZhang.StockLib
{
    public class Compress
    {
        /// <summary>
        /// 压缩字符窜
        /// </summary>
        /// <param name="unCompressedString">原始字符窜</param>
        /// <returns>压缩后的字符窜</returns>
        public static string ZipString(string unCompressedString)
        {

            byte[] bytData = System.Text.Encoding.UTF8.GetBytes(unCompressedString);
            MemoryStream ms = new MemoryStream();
            Stream s = new GZipStream(ms, CompressionMode.Compress);
            s.Write(bytData, 0, bytData.Length);
            s.Close();
            byte[] compressedData = (byte[])ms.ToArray();
            return System.Convert.ToBase64String(compressedData, 0, compressedData.Length);
        }

        /// <summary>
        /// 解压缩字符窜
        /// </summary>
        /// <param name="unCompressedString">压缩后的字符窜</param>
        /// <returns>解压缩后的字符窜</returns>
        public static string UnzipString(string unCompressedString)
        {
            //System.Text.StringBuilder uncompressedString = new System.Text.StringBuilder();

            //byte[] writeData = new byte[4096];

            byte[] bytData = System.Convert.FromBase64String(unCompressedString);
            //int totalLength = 0;
            //int size = 0;

            Stream s = new GZipStream(new MemoryStream(bytData), CompressionMode.Decompress);

            StreamReader sw = new StreamReader(s);

            string str = sw.ReadToEnd();

            sw.Close();

            s.Close();

            return str;

            //while (true)
            //{
            //    size = s.Read(writeData, 0, writeData.Length);

            //    if (size > 0)
            //    {
            //        totalLength += size;
            //        uncompressedString.Append(System.Text.Encoding.UTF8.GetString(writeData, 0, size));
            //    }
            //    else
            //    {
            //        break;
            //    }
            //}

            //s.Close();

            //return uncompressedString.ToString();
        }



    }
}
